#ifndef _HELIX_IMAGE_H_
#define _HELIX_IMAGE_H_

#include "../../Helix.h"
#include "../../HObject.h"
#include <string>
#include <vector>

using namespace std;

namespace helix
{

	class MY_CLASS Image : public HObject
	{
	protected:
		static const unsigned int RED_CHANNEL = 0;
		static const unsigned int GREEN_CHANNEL = 1;
		static const unsigned int BLUE_CHANNEL = 2;
		static const unsigned int ALPHA_CHANNEL = 3;

		unsigned int width;
		unsigned int height;
		unsigned int depth;
		int bpp;
		int channels;
		bool loaded;

		vector<unsigned char> *data;

		string imageType;

		void swapPixelComponents(int comp1, int comp2);
	public:
		Image(const char *fileName);
		virtual ~Image();

		unsigned int getWidth();
		unsigned int getHeight();
		unsigned int getDepth();
		int getBitsPerPixel();
		int getChannels();
		bool isLoaded();

		string getType();

		unsigned char* getData();
	};


}

#endif


